package es.efor.ics.gev.service.impl;

import java.util.List;
import java.util.SortedSet;

import org.springframework.beans.factory.annotation.Autowired;

import es.efor.ics.gev.dao.AtributoMaestroDao;
import es.efor.ics.gev.model.AtributoMaestro;
import es.efor.ics.gev.service.AtributoMaestroManager;

public class AtributoMaestroManagerImpl extends
		GenericManagerImpl<AtributoMaestro, Long> implements
		AtributoMaestroManager {

	private AtributoMaestroDao atributoMaestroDao;

	@Autowired
	public void setAtributoMaestroDao(AtributoMaestroDao atributoMaestroDao) {
		this.dao = atributoMaestroDao;
		this.atributoMaestroDao = atributoMaestroDao;
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributos() {
		return atributoMaestroDao.getAtributos();
	}

	/**
	 * {@inheritDoc}
	 */
	public SortedSet<AtributoMaestro> getOrderedSetAtributos() {
		return atributoMaestroDao.getOrderedSetAtributos();
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByNombre(String nombreAtributo) {
		return atributoMaestroDao.getAtributosByNombre(nombreAtributo);
	}

	/**
	 * {@inheritDoc}
	 */	
	public List<AtributoMaestro> getAtributosByNombreAndCategoria(
			String nombreAtributo, String categoriaAtributoId) {
		return atributoMaestroDao.getAtributosByNombreAndCategoria(nombreAtributo, new Long(categoriaAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByNombreAndTipo(
			String nombreAtributo, String tipoAtributoId) {
		return atributoMaestroDao.getAtributosByNombreAndTipo(nombreAtributo, new Long(tipoAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByCategoria(
			String categoriaAtributoId) {
		return atributoMaestroDao.getAtributosByCategoria(new Long(
				categoriaAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByNombreCategoria(
			String nombreCategoriaAtributo) {
		return atributoMaestroDao
				.getAtributosByNombreCategoria(nombreCategoriaAtributo);
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByNombreCategoriaExacto(
			String nombreCategoriaAtributo) {
		return atributoMaestroDao
				.getAtributosByNombreCategoriaExacto(nombreCategoriaAtributo);
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByTipo(String tipoAtributoId) {
		return atributoMaestroDao.getAtributosByTipo(new Long(tipoAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByTipoAndCategoria(
			String tipoAtributoId, String categoriaAtributoId) {
		return atributoMaestroDao.getAtributosByTipoAndCategoria(new Long(
				tipoAtributoId), new Long(categoriaAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public List<AtributoMaestro> getAtributosByNombreAndTipoAndCategoria(
			String nombre, String tipoAtributoId, String categoriaAtributoId) {
		return atributoMaestroDao
				.getAtributosByNombreAndTipoAndCategoria(nombre, new Long(
						tipoAtributoId), new Long(categoriaAtributoId));
	}

	/**
	 * {@inheritDoc}
	 */
	public AtributoMaestro saveAtributo(AtributoMaestro atributo) {
		return atributoMaestroDao.save(atributo);
	}

}
